<form #myForm="ngForm" (ngSubmit)="onSubmit(myForm.value,myForm.valid)" novalidate>
  在ngForm里面使用ngModel指令的时候不需要使用[()]
  <!--<div ngModelGroup="userInfo">
    <div>用户名：<input ngModel #username="ngModel" name="username" type="text"></div>
    <div>手机号：<input ngModel name="mobile" type="text" ></div>
  </div>-->
  <div>用户名：<input ngModel required minlength="6" name="username" type="text" (input)="onMobileInput(myForm)"></div>
  <div [hidden]="mobileValid || mobileUntouched">
    <div [hidden]="!myForm.form.hasError('required','username')">    <!--第一个参数是key(可以看控制台的错误key)，第二个参数是想检查的字段的名字-->
      用户名是必填项
    </div>
    <div [hidden]="!myForm.form.hasError('minlength','username')">
      用户名最小长度是6
    </div>
  </div>
  <div>手机号：<input ngModel mobile name="mobile" type="number" ></div>
  <div [hidden]="!myForm.form.hasError('mobile','mobile')">
    请输入正确的手机号
  </div>
  <div ngModelGroup="passwordsGroup" equal>
    <div>密码：<input ngModel minlength="6" name="password" type="password"></div>
    <div [hidden]="!myForm.form.hasError('minlength',['passwordsGroup','password'])">   <!--如果想校验在Group里面的Control，第二个参数就要传一个数组，第一个是formGroupName的值，第二个才是要校验的formControlName的值-->
      密码最小长度是6
    </div>
    <div>确认密码：<input ngModel name="pconfirm" type="password" ></div>
    <div [hidden]="!myForm.form.hasError('equal','passwordsGroup')">
      <!--密码和确认密码不匹配-->
      {{myForm.form.getError('equal','passwordsGroup')?.aaa}}
    </div>
  </div>

  <button type="submit">注册</button>
</form>
<!--<div>-->
  <!--{{myForm.value | json}}-->
<!--</div>-->
<!--<div>-->
  <!--{{username.value}}-->
<!--</div>-->
